BIPs bitcoin improvement proposals

385 - raw() and addr() Output Script Descriptors

BIP: 385 source Layer: Applications Title: raw() and addr() Output Script Descriptors Author: Pieter Wuille Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0385 Status: Draft Type: Informational Created: 2021-06-27 License: BSD-2-Clause Table of ContentsAbstractCopyrightMotivationSpecificationraw()addr()Test VectorsBackwards CompatibilityReference Implementation Abstract This document specifies raw() and addr() output script descriptors. raw() encapsulates a raw script as a descriptor. addr() encapsulates an address as a descriptor. Copyright This BIP is licensed under the BSD 2-clause license. Motivation In order to make descriptors maximally compatible with scripts in use today, it is useful to be able to wrap any arbitrary output script or an address into a descriptor. Specification Two new script expressions are defined: raw() and addr(). raw() The raw(HEX) expression can only be used as ...

384 - combo() Output Script Descriptors

BIP: 384 source Layer: Applications Title: combo() Output Script Descriptors Author: Pieter Wuille Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0384 Status: Draft Type: Informational Created: 2021-06-27 License: BSD-2-Clause Table of ContentsAbstractCopyrightMotivationSpecificationTest VectorsBackwards CompatibilityReference Implementation Abstract This document specifies combo() output script descriptors. These take a key and produce P2PK, P2PKH, P2WPKH, and P2SH-P2WPKH output scripts if applicable to the key. Copyright This BIP is licensed under the BSD 2-clause license. Motivation In order to make the transition from traditional key based wallets to descriptor based wallets easier, it is useful to be able to take a key and produce the scripts which have traditionally been produced by wallet software. Specification A new top level script expression is defined: combo(KEY). This expression ...

382 - Segwit Output Script Descriptors

BIP: 382 source Layer: Applications Title: Segwit Output Script Descriptors Author: Pieter Wuille Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0382 Status: Draft Type: Informational Created: 2021-06-27 License: BSD-2-Clause Table of ContentsAbstractCopyrightMotivationSpecificationwpkh()wsh()Test VectorsBackwards CompatibilityReference Implementation Abstract This document specifies wpkh(), and wsh() output script descriptors. wpkh() descriptors take a key and produces a P2WPKH output script. wsh() descriptors take a script and produces a P2WSH output script. Copyright This BIP is licensed under the BSD 2-clause license. Motivation Segregated Witness added 2 additional standard output script formats: P2WPKH and P2WSH. These expressions allow specifying those formats as a descriptor. Specification Two new script expressions are defined: wpkh(), and wsh(). wpkh() The wpkh(KEY) expression can ...

381 - Non-Segwit Output Script Descriptors

BIP: 381 source Layer: Applications Title: Non-Segwit Output Script Descriptors Author: Pieter Wuille Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0381 Status: Draft Type: Informational Created: 2021-06-27 License: BSD-2-Clause Table of ContentsAbstractCopyrightMotivationSpecificationpk()pkh()sh()Test VectorsBackwards CompatibilityReference Implementation Abstract This document specifies pk(), pkh(), and sh() output script descriptors. pk() descriptors take a key and produces a P2PK output script. pkh() descriptors take a key and produces a P2PKH output script. sh() descriptors take a script and produces a P2SH output script. Copyright This BIP is licensed under the BSD 2-clause license. Motivation Prior to the activation of Segregated Witness, there were 3 main standard output script formats: P2PK, P2PKH, and P2SH. These expressions allow specifying those formats as a descriptor. Specificat...

86 - Key Derivation for Single Key P2TR Outputs

BIP: 86 source Layer: Applications Title: Key Derivation for Single Key P2TR Outputs Author: Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0086 Status: Draft Type: Standards Track Created: 2021-06-22 License: BSD-2-Clause Table of ContentsAbstractCopyrightMotivationSpecificationsPublic key derivationAddress derivationBackwards CompatibilityTest vectorsReference Abstract This document suggests a derivation scheme for HD wallets whose keys are involved in single key P2TR (BIP 341) outputs as the Taproot internal key. Copyright This BIP is licensed under the 2-clause BSD license. Motivation With the usage of single key P2TR transactions, it is useful to have a common derivation scheme so that HD wallets that only have a backup of the HD seed can be likely to recover single key Taproot outputs. Although there are now solutions which obviate the need for fixed derivation paths for specific script types, many...

383 - Multisig Output Script Descriptors

BIP: 383 source Layer: Applications Title: Multisig Output Script Descriptors Author: Pieter Wuille Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0383 Status: Draft Type: Informational Created: 2021-06-27 License: BSD-2-Clause Table of ContentsAbstractCopyrightMotivationSpecificationsortedmulti()Multiple Extended KeysTest VectorsBackwards CompatibilityReference Implementation Abstract This document specifies multi(), and sortedmulti() output script descriptors. Both functions take a threshold and one or more public keys and produce a multisig output script. multi() specifies the public keys in the output script in the order given in the descriptor while sortedmulti() sorts the public keys lexicographically when the output script is produced. Copyright This BIP is licensed under the BSD 2-clause license. Motivation The most common complex script used in Bitcoin is a threshold multisig. These e...

386 - tr() Output Script Descriptors

BIP: 386 source Layer: Applications Title: tr() Output Script Descriptors Author: Pieter Wuille Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0386 Status: Draft Type: Informational Created: 2021-06-27 License: BSD-2-Clause Table of ContentsAbstractCopyrightMotivationSpecificationTree Expressiontr()Modified Key ExpressionTest VectorsBackwards CompatibilityReference Implementation Abstract This document specifies tr() output script descriptors. tr() descriptors take a key and optionally a tree of scripts and produces a P2TR output script. Copyright This BIP is licensed under the BSD 2-clause license. Motivation Taproot added one additional standard output script format: P2TR. These expressions allow specifying those formats as a descriptor. Specification A new script expression is defined: tr(). A new expression is defined: Tree Expressions Tree Expression A Tree Expression (denoted TREE) is ...

389 - Multipath Descriptor Key Expressions

BIP: 389 source Layer: Applications Title: Multipath Descriptor Key Expressions Author: Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0389 Status: Draft Type: Informational Created: 2022-07-26 License: BSD-2-Clause Table of ContentsAbstractCopyrightMotivationSpecificationTest VectorsBackwards CompatibilityReference Implementation Abstract This document specifies a modification to Key Expressions of Descriptors that are described in BIP 380. This modification allows Key Expressions to indicate BIP 32 derivation path steps that can have multiple values. Copyright This BIP is licensed under the BSD 2-clause license. Motivation Descriptors can describe the scripts that are used in a wallet, but wallets often require at least two descriptors for all of the scripts that they watch for. Wallets typically have one descriptor for producing receiving addresses, and the other for change addresses. These descriptor...

371 - Taproot Fields for PSBT

BIP: 371 source Layer: Applications Title: Taproot Fields for PSBT Author: Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0371 Status: Draft Type: Standards Track Created: 2021-06-21 License: BSD-2-Clause Table of ContentsIntroductionAbstractCopyrightMotivationSpecificationUTXO TypesCompatibilityTest VectorsRationaleReference implementationAcknowledgements Introduction Abstract This document proposes additional fields for BIP 174 PSBTv0 and BIP 370 PSBTv2 that allow for BIP 340/341/342 Taproot data to be included in a PSBT of any version. These will be fields for signatures and scripts that are relevant to the creation of Taproot inputs. Copyright This BIP is licensed under the 2-clause BSD license. Motivation BIPs 340, 341, and 342 specify Taproot which provides a wholly new way to create and spend Bitcoin outputs. The existing PSBT fields are unable to support Taproot due to the new signature algorit...

380 - Output Script Descriptors General Operation

BIP: 380 source Layer: Applications Title: Output Script Descriptors General Operation Author: Pieter Wuille Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0380 Status: Draft Type: Informational Created: 2021-06-27 License: BSD-2-Clause Table of ContentsAbstractCopyrightMotivationSpecificationScript ExpressionsKey ExpressionsNormalization of Key Expressions with Hardened DerivationCharacter SetChecksumTest VectorsBackwards CompatibilityReference ImplementationAppendix A: Index of ExpressionsAppendix B: Index of Script Expressions Abstract Output Script Descriptors are a simple language which can be used to describe collections of output scripts. There can be many different descriptor fragments and functions. This document describes the general syntax for descriptors, descriptor checksums, and common expressions. Copyright This BIP is licensed under the BSD 2-clause license. Motivation Bitcoin ...

370 - PSBT Version 2

BIP: 370 source Layer: Applications Title: PSBT Version 2 Author: Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0370 Status: Draft Type: Standards Track Created: 2021-01-14 License: BSD-2-Clause Table of ContentsIntroductionAbstractCopyrightMotivationSpecificationDetermining Lock TimeUnique IdentificationRolesCreatorConstructorUpdaterSignerTransaction ExtractorBackwards CompatibilityTest VectorsRationaleReference implementation Introduction Abstract This document proposes a second version of the Partially Signed Bitcoin Transaction format described in BIP 174 which allows for inputs and outputs to be added to the PSBT after creation. Copyright This BIP is licensed under the 2-clause BSD license. Motivation Partially Signed Bitcoin Transaction Version 0 as described in BIP 174 is unable to have new inputs and outputs be added to the transaction. The fixed global unsigned transaction cannot be changed w...

174 - Partially Signed Bitcoin Transaction Format

BIP: 174 source Layer: Applications Title: Partially Signed Bitcoin Transaction Format Author: Ava Chow Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-0174 Status: Final Type: Standards Track Created: 2017-07-12 License: BSD-2-Clause Table of ContentsIntroductionAbstractCopyrightMotivationSpecificationHandling Duplicated KeysProprietary Use TypeVersion 0RolesCreatorUpdaterSignerData Signers Check ForSimple Signer AlgorithmChange DetectionCombinerInput FinalizerTransaction ExtractorEncodingExtensibilityVersion NumbersProcedure For New FieldsProcedure For New VersionsCompatibilityExamplesManual CoinJoin Workflow2-of-3 Multisig WorkflowTest VectorsRationaleReference implementationAcknowledgements Introduction Abstract This document proposes a binary transaction format which contains the information necessary for a signer to produce signatures for the transaction and holds the signatures for an input while the input ...